// Priors
mu_beta ~ cauchy(0, 5);
alpha ~ std_normal();
for (k in 1:K){
beta_raw[k,] ~ normal(0, sigma_beta);
gamma_raw[k,] ~ lognormal(0, sigma_gamma);
}
sigma_beta ~ cauchy(0, 5);
sigma_gamma ~ cauchy(0, 5);
// Likelihood
for (j in 1:J) {
matrix[K, C] logits = rep_matrix(-1e8, K, C);
for (k in 1:K) {
if (eligibility[j, k] == 1) {
for (c in 1:C) {
if (candidates[k, c] == 1) {
logits[k, c] = gamma[k, c] * alpha[j] - (beta[k, c] + mu_beta);
}
}
target += categorical_logit_lpmf(votes[j, k] | logits[k]');
}
}
}